package com.elite.groovy.dev;

import com.elite.groovy.kh.KHUtil;
import com.wisdge.dataservice.utils.JSonUtils;
import net.sf.json.JSONObject;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.util.HashMap;
import java.util.Map;

/**
 * @projectName: ngsapitask-cdcs
 * @package: com.elite.groovy.kh
 * @className: Test
 * @author: LiJT
 * @description: TODO
 * @date: 2023-05-05 20:17
 * @version: 1.0
 */
public class Test {
    private static final Log log = LogFactory.getLog(Test.class);

    public static void main(String[] args) throws Exception {

       String respString = "{\n" +
               "    \"CodeId\": \"6209609104081330086580\",\n" +
               "    \"Succeess\": true,\n" +
               "    \"Color\": \"倒数第2位数字是8且颜色是绿色\\n最后1位数字是0且颜色是红色\",\n" +
               "    \"ColorNumber\": \"\",\n" +
               "    \"ErrorMessage\": null,\n" +
               "    \"FirstQueryTime\": \"2025-08-13\",\n" +
               "    \"Image\": \"\",\n" +
               "    \"InnerPacking\": \"12.7KG+4.3L/桶\",\n" +
               "    \"IsXK\": false,\n" +
               "    \"LastQueryTime\": \"2025年08月13日 18时58分 \",\n" +
               "    \"MaskId\": \"6209609104081330086580\",\n" +
               "    \"ProduceBatchNo\": \"99241224161\",\n" +
               "    \"ProduceCorpCode\": \"801\",\n" +
               "    \"ProduceCorpName\": \"西卡德高（广东）新材料有限公司\",\n" +
               "    \"ProduceDate\": \"2024-12-24\",\n" +
               "    \"ProductCode\": \"40203.12532\",\n" +
               "    \"ProductName\": \"德高K11彩色防水砂浆蓝17KG(红包版)\",\n" +
               "    \"QueryKind\": 6,\n" +
               "    \"QueryTimes\": 1,\n" +
               "    \"TQR\": \"\",\n" +
               "    \"Type\": 3\n" +
               "}";

       JSONObject resJSON = JSONObject.fromObject(respString);

        System.out.println(doIVRToFlowType(resJSON));


    }


    public static int doIVRToFlowType(JSONObject dataJSON) {
        /* IVR播报场景
        0 假货提示音(非德高正品)
        1 查询异常提示语音(查询结果异常)
        2 查无此码
        3 德高正品(播报详情)
        4 产品查询为系统异常
        9 德高公司正品语音提示
        13 西卡公司正品语音提示
        */
        /* 映射规则
        type=10
            Succeess=false
                1 查询异常提示语音(查询结果异常)
            Succeess=true
                4 产品查询为系统异常
        type=4
            Succeess=false
                1 查询异常提示语音(查询结果异常)
            Succeess=true
                4 产品查询为系统异常
        type=3
            Succeess=false
                0 假货提示音(非德高正品)
            Succeess=true
                ProductName,ProduceDate,Color空
                    9 德高公司正品语音提示
                    13 西卡公司正品语音提示
                ProductName,ProduceDate,Color非空
                    3 德高正品(播报详情)
        type=0
            Succeess=false
                2 查无此码
            Succeess=true
                4 产品查询为系统异常
        * */
        if (dataJSON == null) {
            return 4;
        }

        String Type = KHUtil.GetSFJV(dataJSON, "Type");
        String Succeess = KHUtil.GetSFJV(dataJSON, "Succeess");
        boolean isSuccess = Succeess == "true";

        switch (Type) {
            case "10":
                // type=10的处理规则
                return isSuccess ? 4 : 1;

            case "4":
                // type=4的处理规则
                return isSuccess ? 4 : 1;

            case "3":
                // type=3的处理规则
                if (!isSuccess) {
                    return 0; // 假货提示音(非德高正品)
                } else {
                    // 检查ProductName,ProduceDate,Color是否为空
                    boolean isProductNameEmpty = isEmpty(KHUtil.GetSFJV(dataJSON, "ProductName"));
                    boolean isProduceDateEmpty = isEmpty(KHUtil.GetSFJV(dataJSON, "ProduceDate"));
                    boolean isColorEmpty = isEmpty(KHUtil.GetSFJV(dataJSON, "Color"));

                    if (isProductNameEmpty && isProduceDateEmpty && isColorEmpty) {
                        // 这里需要注意：规则中没有明确说明9和13的区分条件
                        // 假设根据公司名称区分，德高公司返回9，西卡公司返回13
                        if (KHUtil.GetSFJV(dataJSON, "ProduceCorpName").contains("西卡")) {
                            return 13; // 西卡公司正品语音提示
                        } else {
                            return 9; // 德高公司正品语音提示
                        }
                    } else {
                        return 3; // 德高正品(播报详情)
                    }
                }

            case "0":
                // type=0的处理规则
                return isSuccess ? 4 : 2;

            default:
                // 未知类型，返回系统异常
                return 4;
        }
    }

    /**
     * 判断字符串是否为空（包括null和空字符串）
     * @param str 待判断的字符串
     * @return 如果为空则返回true，否则返回false
     */
    private static boolean isEmpty(String str) {
        return str == null || str.trim().isEmpty();
    }

}
